package com.ruoyi.clinic.mapper;

import java.util.List;

import com.ruoyi.clinic.domain.ClinicDoctorInfo;
import com.ruoyi.clinic.dto.clinicdoctor.ClinicDoctorReqDTO;
import com.ruoyi.clinic.dto.clinicdoctor.ClinicDoctorResDTO;
import org.apache.ibatis.annotations.Param;

/**
 * 医生信息Mapper接口
 *
 * @author Tommy
 * @date 2025-11-08
 */
public interface ClinicDoctorInfoMapper {
    /**
     * 查询医生信息
     *
     * @param doctorId 医生信息主键
     * @return 医生信息
     */
    public ClinicDoctorInfo selectClinicDoctorInfoByDoctorId(Long doctorId);

    /**
     * 根据身份证号查询
     *
     * @param identityCardNum 身份证号
     * @return 医生信息集合
     */
    List<ClinicDoctorInfo> selectListByIdentityCardNum(@Param("identityCardNum") String identityCardNum);

    /**
     * 查询医生信息列表
     *
     * @param clinicDoctorInfo 医生信息
     * @return 医生信息集合
     */
    public List<ClinicDoctorInfo> selectClinicDoctorInfoList(ClinicDoctorInfo clinicDoctorInfo);

    /**
     * 分页查询
     *
     * @param dto 前端入参
     * @return DTO集合
     */
    List<ClinicDoctorResDTO> queryPageList(ClinicDoctorReqDTO dto);

    /**
     * 查询我负责的医生
     *
     * @param dto 前端入参
     * @return DTO集合
     */
    List<ClinicDoctorResDTO> queryMyDoctorPageList(ClinicDoctorReqDTO dto);

    /**
     * 根据身份证号查询
     *
     * @param identityCardNumList 身份证号码集合
     * @return ClinicDoctorInfo 集合
     */
    List<ClinicDoctorInfo> selectListByIdentityCardNums(@Param("list") List<String> identityCardNumList);

    /**
     * 新增医生信息
     *
     * @param clinicDoctorInfo 医生信息
     * @return 结果
     */
    public int insertClinicDoctorInfo(ClinicDoctorInfo clinicDoctorInfo);

    /**
     * 修改医生信息
     *
     * @param clinicDoctorInfo 医生信息
     * @return 结果
     */
    public int updateClinicDoctorInfo(ClinicDoctorInfo clinicDoctorInfo);

    /**
     * 删除医生信息
     *
     * @param doctorId 医生信息主键
     * @return 结果
     */
    public int deleteClinicDoctorInfoByDoctorId(Long doctorId);

    /**
     * 批量删除医生信息
     *
     * @param doctorIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteClinicDoctorInfoByDoctorIds(String[] doctorIds);
}
